Load libraries

library(knitr)
library(rmdformats)
library(ggplot2)
library(ggpubr)
library(GGally)
Registered S3 method overwritten by 'GGally':
  method from   
  +.gg   ggplot2
library(car)
Loading required package: carData
library(tidyverse)
library(lme4)
library(lmerTest)
library("MuMIn")
library(lmtest)
library(boot)

Read datasets

AllSubs_NeuralActivation <- read.csv('/Users/luisalvarez/Documents/GitHub/RM_Thesis_Neuroforecasting/ProcessedData/AllSubs_NeuralActivation_Aggregate_Combined_clean.csv')

AllSubs_NeuralActivation_Comedy <- read.csv('/Users/luisalvarez/Documents/GitHub/RM_Thesis_Neuroforecasting/ProcessedData/AllSubs_NeuralActivation_Aggregate_Combined_Comedy_clean.csv')

AllSubs_NeuralActivation_Horror <- read.csv('/Users/luisalvarez/Documents/GitHub/RM_Thesis_Neuroforecasting/ProcessedData/AllSubs_NeuralActivation_Aggregate_Combined_Horror_clean.csv')

Notes:

Create data frames for each model.

# Define aggregate variables. 
All_Gross_W1_log <- log(AllSubs_NeuralActivation$Gross_US_W1_num)
All_Theaters_W1 <- AllSubs_NeuralActivation$Theaters_US_W1_num

Comedy_Gross_W1_log <- log(AllSubs_NeuralActivation_Comedy$Gross_US_W1_num)
Comedy_Theaters_W1 <- AllSubs_NeuralActivation_Comedy$Theaters_US_W1_num

Horror_Gross_W1_log <- log(AllSubs_NeuralActivation_Horror$Gross_US_W1_num)
Horror_Theaters_W1 <- AllSubs_NeuralActivation_Horror$Theaters_US_W1_num
  
M1_df <- data.frame(All_Gross_W1_log, All_Theaters_W1) 
M1_C_df <- data.frame(Comedy_Gross_W1_log, Comedy_Theaters_W1) 
M1_H_df <- data.frame(Horror_Gross_W1_log, Horror_Theaters_W1) 

# Define affect variables.
All_PA <- AllSubs_NeuralActivation$Pos_arousal_scaled
All_NA <- AllSubs_NeuralActivation$Neg_arousal_scaled

Comedy_PA <- AllSubs_NeuralActivation_Comedy$Pos_arousal_scaled
Comedy_NA <- AllSubs_NeuralActivation_Comedy$Neg_arousal_scaled

Horror_PA <- AllSubs_NeuralActivation_Horror$Pos_arousal_scaled
Horror_NA <- AllSubs_NeuralActivation_Horror$Neg_arousal_scaled

M2_df <- data.frame(All_Gross_W1_log, All_PA, All_NA) 
M2_C_df <- data.frame(Comedy_Gross_W1_log, Comedy_PA, Comedy_NA) 
M2_H_df <- data.frame(Horror_Gross_W1_log, Horror_PA, Horror_NA) 
# Define ISC variables. 
All_NAcc_ISC <- AllSubs_NeuralActivation$NAcc_ISC
All_AIns_ISC <- AllSubs_NeuralActivation$AIns_ISC
All_MPFC_ISC <- AllSubs_NeuralActivation$MPFC_ISC

Comedy_NAcc_ISC <- AllSubs_NeuralActivation_Comedy$NAcc_ISC
Comedy_AIns_ISC <- AllSubs_NeuralActivation_Comedy$AIns_ISC
Comedy_MPFC_ISC <- AllSubs_NeuralActivation_Comedy$MPFC_ISC

Horror_NAcc_ISC <- AllSubs_NeuralActivation_Horror$NAcc_ISC
Horror_AIns_ISC <- AllSubs_NeuralActivation_Horror$AIns_ISC
Horror_MPFC_ISC <- AllSubs_NeuralActivation_Horror$MPFC_ISC

# Define models. 
M4_df <- data.frame(All_NAcc_ISC, All_AIns_ISC, All_MPFC_ISC) 
M4_C_df <- data.frame(Comedy_NAcc_ISC, Comedy_AIns_ISC, Comedy_MPFC_ISC) 
M4_H_df <- data.frame(Horror_NAcc_ISC, Horror_AIns_ISC, Horror_MPFC_ISC) 

M5_df <- data.frame(All_Gross_W1_log, All_PA, All_NA, All_NAcc_ISC, All_AIns_ISC, All_MPFC_ISC) 
M5_C_df <- data.frame(Comedy_Gross_W1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_ISC, Comedy_AIns_ISC, Comedy_MPFC_ISC) 
M5_H_df <- data.frame(Horror_Gross_W1_log, Horror_PA, Horror_NA, Horror_NAcc_ISC, Horror_AIns_ISC, Horror_MPFC_ISC) 
# Define whole variables. 
All_NAcc_whole <- AllSubs_NeuralActivation$NAcc_whole
All_AIns_whole <- AllSubs_NeuralActivation$AIns_whole
All_MPFC_whole <- AllSubs_NeuralActivation$MPFC_whole

Comedy_NAcc_whole <- AllSubs_NeuralActivation_Comedy$NAcc_whole
Comedy_AIns_whole <- AllSubs_NeuralActivation_Comedy$AIns_whole
Comedy_MPFC_whole <- AllSubs_NeuralActivation_Comedy$MPFC_whole

Horror_NAcc_whole <- AllSubs_NeuralActivation_Horror$NAcc_whole
Horror_AIns_whole <- AllSubs_NeuralActivation_Horror$AIns_whole
Horror_MPFC_whole <- AllSubs_NeuralActivation_Horror$MPFC_whole

# Define models. 
M6_df <- data.frame(All_NAcc_whole, All_AIns_whole, All_MPFC_whole) 
M6_C_df <- data.frame(Comedy_NAcc_whole, Comedy_AIns_whole, Comedy_MPFC_whole) 
M6_H_df <- data.frame(Horror_NAcc_whole, Horror_AIns_whole, Horror_MPFC_whole) 

M7_df <- data.frame(All_Gross_W1_log, All_PA, All_NA, All_NAcc_whole, All_AIns_whole, All_MPFC_whole) 
M7_C_df <- data.frame(Comedy_Gross_W1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_whole,
                      Comedy_AIns_whole, Comedy_MPFC_whole) 
M7_H_df <- data.frame(Horror_Gross_W1_log, Horror_PA, Horror_NA, Horror_NAcc_whole,
                      Horror_AIns_whole, Horror_MPFC_whole) 
# Define onset variables. 
All_NAcc_onset <- AllSubs_NeuralActivation$NAcc_onset
All_AIns_onset <- AllSubs_NeuralActivation$AIns_onset
All_MPFC_onset <- AllSubs_NeuralActivation$MPFC_onset

Comedy_NAcc_onset <- AllSubs_NeuralActivation_Comedy$NAcc_onset
Comedy_AIns_onset <- AllSubs_NeuralActivation_Comedy$AIns_onset
Comedy_MPFC_onset <- AllSubs_NeuralActivation_Comedy$MPFC_onset

Horror_NAcc_onset <- AllSubs_NeuralActivation_Horror$NAcc_onset
Horror_AIns_onset <- AllSubs_NeuralActivation_Horror$AIns_onset
Horror_MPFC_onset <- AllSubs_NeuralActivation_Horror$MPFC_onset

# Define models. 
M8_df <- data.frame(All_NAcc_onset, All_AIns_onset, All_MPFC_onset) 
M8_C_df <- data.frame(Comedy_NAcc_onset, Comedy_AIns_onset, Comedy_MPFC_onset) 
M8_H_df <- data.frame(Horror_NAcc_onset, Horror_AIns_onset, Horror_MPFC_onset) 

M9_df <- data.frame(All_Gross_W1_log, All_PA, All_NA, All_NAcc_onset, All_AIns_onset, All_MPFC_onset) 
M9_C_df <- data.frame(Comedy_Gross_W1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_onset,
                      Comedy_AIns_onset, Comedy_MPFC_onset) 
M9_H_df <- data.frame(Horror_Gross_W1_log, Horror_PA, Horror_NA, Horror_NAcc_onset,
                      Horror_AIns_onset, Horror_MPFC_onset) 
# Define middle variables. 
All_NAcc_middle <- AllSubs_NeuralActivation$NAcc_middle
All_AIns_middle <- AllSubs_NeuralActivation$AIns_middle
All_MPFC_middle <- AllSubs_NeuralActivation$MPFC_middle

Comedy_NAcc_middle <- AllSubs_NeuralActivation_Comedy$NAcc_middle
Comedy_AIns_middle <- AllSubs_NeuralActivation_Comedy$AIns_middle
Comedy_MPFC_middle <- AllSubs_NeuralActivation_Comedy$MPFC_middle

Horror_NAcc_middle <- AllSubs_NeuralActivation_Horror$NAcc_middle
Horror_AIns_middle <- AllSubs_NeuralActivation_Horror$AIns_middle
Horror_MPFC_middle <- AllSubs_NeuralActivation_Horror$MPFC_middle

# Define models. 
M10_df <- data.frame(All_NAcc_middle, All_AIns_middle, All_MPFC_middle) 
M10_C_df <- data.frame(Comedy_NAcc_middle, Comedy_AIns_middle, Comedy_MPFC_middle) 
M10_H_df <- data.frame(Horror_NAcc_middle, Horror_AIns_middle, Horror_MPFC_middle) 

M11_df <- data.frame(All_Gross_W1_log, All_PA, All_NA, All_NAcc_middle, All_AIns_middle, All_MPFC_middle) 
M11_C_df <- data.frame(Comedy_Gross_W1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_middle,
                      Comedy_AIns_middle, Comedy_MPFC_middle) 
M11_H_df <- data.frame(Horror_Gross_W1_log, Horror_PA, Horror_NA, Horror_NAcc_middle,
                      Horror_AIns_middle, Horror_MPFC_middle) 
# Define middle variables. 
All_NAcc_offset <- AllSubs_NeuralActivation$NAcc_offset
All_AIns_offset <- AllSubs_NeuralActivation$AIns_offset
All_MPFC_offset <- AllSubs_NeuralActivation$MPFC_offset

Comedy_NAcc_offset <- AllSubs_NeuralActivation_Comedy$NAcc_offset
Comedy_AIns_offset <- AllSubs_NeuralActivation_Comedy$AIns_offset
Comedy_MPFC_offset <- AllSubs_NeuralActivation_Comedy$MPFC_offset

Horror_NAcc_offset <- AllSubs_NeuralActivation_Horror$NAcc_offset
Horror_AIns_offset <- AllSubs_NeuralActivation_Horror$AIns_offset
Horror_MPFC_offset <- AllSubs_NeuralActivation_Horror$MPFC_offset

# Define models. 
M12_df <- data.frame(All_NAcc_offset, All_AIns_offset, All_MPFC_offset) 
M12_C_df <- data.frame(Comedy_NAcc_offset, Comedy_AIns_offset, Comedy_MPFC_offset) 
M12_H_df <- data.frame(Horror_NAcc_offset, Horror_AIns_offset, Horror_MPFC_offset) 

M13_df <- data.frame(All_Gross_W1_log, All_PA, All_NA, All_NAcc_offset, All_AIns_offset, All_MPFC_offset) 
M13_C_df <- data.frame(Comedy_Gross_W1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_offset,
                      Comedy_AIns_offset, Comedy_MPFC_offset) 
M13_H_df <- data.frame(Horror_Gross_W1_log, Horror_PA, Horror_NA, Horror_NAcc_offset,
                      Horror_AIns_offset, Horror_MPFC_offset) 

M14_df <- data.frame(All_Gross_W1_log, All_PA, All_NA, All_NAcc_onset, All_AIns_middle, All_MPFC_offset) 
M14_C_df <- data.frame(Comedy_Gross_W1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_onset,
                      Comedy_AIns_middle, Comedy_MPFC_offset) 
M14_H_df <- data.frame(Horror_Gross_W1_log, Horror_PA, Horror_NA, Horror_NAcc_onset,
                      Horror_AIns_middle, Horror_MPFC_offset) 

Neuroforecasting: First Week US.

M1: Behavioral data


Call:
lm(formula = log(Gross_US_W1_num) ~ Type + scale(Theaters_US_W1_num) + 
    Type:scale(Theaters_US_W1_num), data = AllSubs_NeuralActivation %>% 
    mutate(Type = factor(Type, levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-1.55922 -0.28515  0.02387  0.33475  1.38066 

Coefficients:
                                     Estimate Std. Error t value Pr(>|t|)    
(Intercept)                           16.4641     0.2010  81.928  < 2e-16 ***
Typecomedy                            -0.5646     0.2655  -2.127  0.04310 *  
scale(Theaters_US_W1_num)              1.5282     0.4206   3.633  0.00121 ** 
Typecomedy:scale(Theaters_US_W1_num)  -0.3868     0.4422  -0.875  0.38980    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.688 on 26 degrees of freedom
Multiple R-squared:  0.7944,    Adjusted R-squared:  0.7706 
F-statistic: 33.48 on 3 and 26 DF,  p-value: 4.425e-09
Warning: 'r.squaredGLMM' now calculates a revised statistic. See the help page.
           R2m       R2c
[1,] 0.7759523 0.7759523
[1] 68.40126

M2: Affective data alone


Call:
lm(formula = log(Gross_US_W1_num) ~ Type + scale(Pos_arousal_scaled) + 
    scale(Neg_arousal_scaled) + Type:scale(Pos_arousal_scaled) + 
    Type:scale(Neg_arousal_scaled), data = AllSubs_NeuralActivation %>% 
    mutate(Type = factor(Type, levels = c("horror", "comedy"))))

Residuals:
    Min      1Q  Median      3Q     Max 
-4.2576 -0.5024  0.2063  0.9296  1.9543 

Coefficients:
                                     Estimate Std. Error t value Pr(>|t|)    
(Intercept)                           16.8120     1.0941  15.367 6.41e-14 ***
Typecomedy                            -0.5457     1.9186  -0.284    0.779    
scale(Pos_arousal_scaled)             -0.3712     0.8719  -0.426    0.674    
scale(Neg_arousal_scaled)             -0.3446     0.7352  -0.469    0.643    
Typecomedy:scale(Pos_arousal_scaled)   0.6381     0.9713   0.657    0.517    
Typecomedy:scale(Neg_arousal_scaled)   1.2147     1.9586   0.620    0.541    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.436 on 24 degrees of freedom
Multiple R-squared:  0.1734,    Adjusted R-squared:  0.001154 
F-statistic: 1.007 on 5 and 24 DF,  p-value: 0.4352

           R2m       R2c
[1,] 0.1478985 0.1478985
[1] 114.1387

M3: Aggregate and affective data alone


Call:
lm(formula = log(Gross_US_W1_num) ~ Type + scale(Pos_arousal_scaled) + 
    scale(Neg_arousal_scaled) + Type:scale(Pos_arousal_scaled) + 
    Type:scale(Neg_arousal_scaled), data = AllSubs_NeuralActivation %>% 
    mutate(Type = factor(Type, levels = c("horror", "comedy"))))

Residuals:
    Min      1Q  Median      3Q     Max 
-4.2576 -0.5024  0.2063  0.9296  1.9543 

Coefficients:
                                     Estimate Std. Error t value Pr(>|t|)    
(Intercept)                           16.8120     1.0941  15.367 6.41e-14 ***
Typecomedy                            -0.5457     1.9186  -0.284    0.779    
scale(Pos_arousal_scaled)             -0.3712     0.8719  -0.426    0.674    
scale(Neg_arousal_scaled)             -0.3446     0.7352  -0.469    0.643    
Typecomedy:scale(Pos_arousal_scaled)   0.6381     0.9713   0.657    0.517    
Typecomedy:scale(Neg_arousal_scaled)   1.2147     1.9586   0.620    0.541    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.436 on 24 degrees of freedom
Multiple R-squared:  0.1734,    Adjusted R-squared:  0.001154 
F-statistic: 1.007 on 5 and 24 DF,  p-value: 0.4352

           R2m       R2c
[1,] 0.1478985 0.1478985
[1] 114.1387

M4: ISC data alone


Call:
lm(formula = log(Gross_US_W1_num) ~ Type + +scale(NAcc_ISC) + 
    scale(AIns_ISC) + scale(MPFC_ISC) + Type:scale(NAcc_ISC) + 
    Type:scale(AIns_ISC) + Type:scale(MPFC_ISC), data = AllSubs_NeuralActivation %>% 
    mutate(Type = factor(Type, levels = c("horror", "comedy"))))

Residuals:
    Min      1Q  Median      3Q     Max 
-4.2048 -0.1694  0.0611  0.5329  2.1397 

Coefficients:
                           Estimate Std. Error t value Pr(>|t|)    
(Intercept)                 16.5755     0.4001  41.425   <2e-16 ***
Typecomedy                  -0.8666     0.5426  -1.597    0.125    
scale(NAcc_ISC)              0.9792     0.6407   1.528    0.141    
scale(AIns_ISC)             -0.3290     0.3713  -0.886    0.385    
scale(MPFC_ISC)              0.3426     0.5758   0.595    0.558    
Typecomedy:scale(NAcc_ISC)  -0.8127     0.7372  -1.102    0.282    
Typecomedy:scale(AIns_ISC)   0.4643     0.6875   0.675    0.507    
Typecomedy:scale(MPFC_ISC)  -0.3259     0.6793  -0.480    0.636    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.412 on 22 degrees of freedom
Multiple R-squared:  0.2675,    Adjusted R-squared:  0.0344 
F-statistic: 1.148 on 7 and 22 DF,  p-value: 0.3709

           R2m       R2c
[1,] 0.2169207 0.2169207
[1] 114.5127

M5: ISC data + affective data + behavioral data


Call:
lm(formula = log(Gross_US_W1_num) ~ Type + scale(Theaters_US_W1_num) + 
    scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_ISC) + 
    scale(AIns_ISC) + scale(MPFC_ISC) + Type:scale(Theaters_US_W1_num) + 
    Type:scale(Pos_arousal_scaled) + Type:scale(Neg_arousal_scaled) + 
    Type:scale(NAcc_ISC) + Type:scale(AIns_ISC) + Type:scale(MPFC_ISC), 
    data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type, 
        levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-0.87653 -0.25413  0.03668  0.21991  0.86396 

Coefficients:
                                     Estimate Std. Error t value Pr(>|t|)    
(Intercept)                           16.2308     0.4864  33.372  3.2e-16 ***
Typecomedy                             1.7209     0.8660   1.987   0.0643 .  
scale(Theaters_US_W1_num)              1.0283     0.4577   2.246   0.0391 *  
scale(Pos_arousal_scaled)             -0.6154     0.3505  -1.756   0.0983 .  
scale(Neg_arousal_scaled)             -0.3082     0.3339  -0.923   0.3697    
scale(NAcc_ISC)                        0.5100     0.3260   1.564   0.1374    
scale(AIns_ISC)                       -0.2797     0.1515  -1.846   0.0835 .  
scale(MPFC_ISC)                        0.4920     0.2487   1.978   0.0654 .  
Typecomedy:scale(Theaters_US_W1_num)   0.2032     0.4732   0.429   0.6734    
Typecomedy:scale(Pos_arousal_scaled)   0.3153     0.4247   0.742   0.4686    
Typecomedy:scale(Neg_arousal_scaled)   2.5055     0.8856   2.829   0.0121 *  
Typecomedy:scale(NAcc_ISC)            -0.1028     0.3831  -0.268   0.7919    
Typecomedy:scale(AIns_ISC)             0.1782     0.3252   0.548   0.5912    
Typecomedy:scale(MPFC_ISC)            -0.8663     0.2976  -2.911   0.0102 *  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.5683 on 16 degrees of freedom
Multiple R-squared:  0.9137,    Adjusted R-squared:  0.8435 
F-statistic: 13.02 on 13 and 16 DF,  p-value: 3.967e-06

           R2m       R2c
[1,] 0.8537563 0.8537563
[1] 62.36914

M6: Neural whole data alone


Call:
lm(formula = log(Gross_US_W1_num) ~ Type + +scale(NAcc_whole) + 
    scale(AIns_whole) + scale(MPFC_whole) + Type:scale(NAcc_whole) + 
    Type:scale(AIns_whole) + Type:scale(MPFC_whole), data = AllSubs_NeuralActivation %>% 
    mutate(Type = factor(Type, levels = c("horror", "comedy"))))

Residuals:
    Min      1Q  Median      3Q     Max 
-3.3207 -0.4154  0.0875  0.6735  1.9061 

Coefficients:
                             Estimate Std. Error t value Pr(>|t|)    
(Intercept)                   16.5397     0.5144  32.151   <2e-16 ***
Typecomedy                    -0.7441     0.7336  -1.014    0.321    
scale(NAcc_whole)             -0.4610     0.4720  -0.977    0.339    
scale(AIns_whole)              0.4847     0.5640   0.859    0.399    
scale(MPFC_whole)              0.2074     0.4805   0.432    0.670    
Typecomedy:scale(NAcc_whole)   0.3703     0.6367   0.582    0.567    
Typecomedy:scale(AIns_whole)  -0.3148     0.8648  -0.364    0.719    
Typecomedy:scale(MPFC_whole)   0.4481     0.5985   0.749    0.462    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.39 on 22 degrees of freedom
Multiple R-squared:  0.2897,    Adjusted R-squared:  0.06374 
F-statistic: 1.282 on 7 and 22 DF,  p-value: 0.3043

           R2m       R2c
[1,] 0.2363251 0.2363251
[1] 113.5872

M7: Neural whole data + affective data + behavioral data


Call:
lm(formula = log(Gross_US_W1_num) ~ Type + scale(Theaters_US_W1_num) + 
    scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_whole) + 
    scale(AIns_whole) + scale(MPFC_whole) + Type:scale(Theaters_US_W1_num) + 
    Type:scale(Pos_arousal_scaled) + Type:scale(Neg_arousal_scaled) + 
    Type:scale(NAcc_whole) + Type:scale(AIns_whole) + Type:scale(MPFC_whole), 
    data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type, 
        levels = c("horror", "comedy"))))

Residuals:
    Min      1Q  Median      3Q     Max 
-0.9203 -0.2891  0.1132  0.2785  0.8050 

Coefficients:
                                     Estimate Std. Error t value Pr(>|t|)    
(Intercept)                           15.9682     0.5578  28.630 3.58e-15 ***
Typecomedy                             1.9268     0.9387   2.053  0.05684 .  
scale(Theaters_US_W1_num)              1.4834     0.4059   3.654  0.00214 ** 
scale(Pos_arousal_scaled)             -0.5858     0.5560  -1.054  0.30776    
scale(Neg_arousal_scaled)             -0.1951     0.3500  -0.557  0.58504    
scale(NAcc_whole)                     -0.1527     0.2250  -0.679  0.50711    
scale(AIns_whole)                      0.4056     0.2529   1.604  0.12838    
scale(MPFC_whole)                      0.1478     0.3226   0.458  0.65303    
Typecomedy:scale(Theaters_US_W1_num)  -0.3294     0.4249  -0.775  0.44947    
Typecomedy:scale(Pos_arousal_scaled)   0.5280     0.5889   0.897  0.38323    
Typecomedy:scale(Neg_arousal_scaled)   2.6532     0.9664   2.745  0.01437 *  
Typecomedy:scale(NAcc_whole)           0.6144     0.3167   1.940  0.07022 .  
Typecomedy:scale(AIns_whole)          -0.7872     0.4000  -1.968  0.06663 .  
Typecomedy:scale(MPFC_whole)           0.1828     0.3609   0.506  0.61952    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.5789 on 16 degrees of freedom
Multiple R-squared:  0.9104,    Adjusted R-squared:  0.8376 
F-statistic: 12.51 on 13 and 16 DF,  p-value: 5.242e-06

           R2m       R2c
[1,] 0.8486198 0.8486198
[1] 63.47876

M8: Neural onset data alone


Call:
lm(formula = log(Gross_US_W1_num) ~ Type + +scale(NAcc_onset) + 
    scale(AIns_onset) + scale(MPFC_onset) + Type:scale(NAcc_onset) + 
    Type:scale(AIns_onset) + Type:scale(MPFC_onset), data = AllSubs_NeuralActivation %>% 
    mutate(Type = factor(Type, levels = c("horror", "comedy"))))

Residuals:
    Min      1Q  Median      3Q     Max 
-3.2381 -0.5877  0.0606  0.9313  1.5928 

Coefficients:
                             Estimate Std. Error t value Pr(>|t|)    
(Intercept)                   16.8587     0.4098  41.139  < 2e-16 ***
Typecomedy                    -1.5954     0.5607  -2.845  0.00941 ** 
scale(NAcc_onset)             -0.2955     0.4451  -0.664  0.51366    
scale(AIns_onset)             -0.1522     0.4976  -0.306  0.76255    
scale(MPFC_onset)              0.1076     0.4433   0.243  0.81041    
Typecomedy:scale(NAcc_onset)   0.4123     0.5784   0.713  0.48342    
Typecomedy:scale(AIns_onset)  -0.8878     0.7206  -1.232  0.23092    
Typecomedy:scale(MPFC_onset)   1.1231     0.6565   1.711  0.10118    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.33 on 22 degrees of freedom
Multiple R-squared:  0.3496,    Adjusted R-squared:  0.1427 
F-statistic: 1.689 on 7 and 22 DF,  p-value: 0.1636

           R2m       R2c
[1,] 0.2896569 0.2896569
[1] 110.9456

M9: Neural onset data + affective data + behavioral data


Call:
lm(formula = log(Gross_US_W1_num) ~ Type + scale(Theaters_US_W1_num) + 
    scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_onset) + 
    scale(AIns_onset) + scale(MPFC_onset) + Type:scale(Theaters_US_W1_num) + 
    Type:scale(Pos_arousal_scaled) + Type:scale(Neg_arousal_scaled) + 
    Type:scale(NAcc_onset) + Type:scale(AIns_onset) + Type:scale(MPFC_onset), 
    data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type, 
        levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-1.03846 -0.29896 -0.00776  0.35507  1.15974 

Coefficients:
                                     Estimate Std. Error t value Pr(>|t|)    
(Intercept)                           16.6929     0.7942  21.020 4.44e-13 ***
Typecomedy                             0.3557     1.2922   0.275  0.78662    
scale(Theaters_US_W1_num)              1.5307     0.4413   3.468  0.00317 ** 
scale(Pos_arousal_scaled)             -0.7416     0.5480  -1.353  0.19475    
scale(Neg_arousal_scaled)             -0.5481     0.5011  -1.094  0.29026    
scale(NAcc_onset)                     -0.1715     0.2349  -0.730  0.47592    
scale(AIns_onset)                     -0.5871     0.3492  -1.681  0.11213    
scale(MPFC_onset)                      0.3101     0.2864   1.083  0.29486    
Typecomedy:scale(Theaters_US_W1_num)  -0.3967     0.4710  -0.842  0.41204    
Typecomedy:scale(Pos_arousal_scaled)   0.5668     0.6007   0.944  0.35945    
Typecomedy:scale(Neg_arousal_scaled)   1.8854     1.1926   1.581  0.13346    
Typecomedy:scale(NAcc_onset)           0.3553     0.3475   1.022  0.32181    
Typecomedy:scale(AIns_onset)           0.2591     0.4616   0.561  0.58242    
Typecomedy:scale(MPFC_onset)          -0.1599     0.4203  -0.380  0.70861    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.6957 on 16 degrees of freedom
Multiple R-squared:  0.8706,    Adjusted R-squared:  0.7654 
F-statistic:  8.28 on 13 and 16 DF,  p-value: 8.012e-05

           R2m       R2c
[1,] 0.7877591 0.7877591
[1] 74.50775

M10: Neural middle data alone


Call:
lm(formula = log(Gross_US_W1_num) ~ Type + +scale(NAcc_middle) + 
    scale(AIns_middle) + scale(MPFC_middle) + Type:scale(NAcc_middle) + 
    Type:scale(AIns_middle) + Type:scale(MPFC_middle), data = AllSubs_NeuralActivation %>% 
    mutate(Type = factor(Type, levels = c("horror", "comedy"))))

Residuals:
    Min      1Q  Median      3Q     Max 
-4.2183 -0.4486  0.0990  0.5238  1.6945 

Coefficients:
                              Estimate Std. Error t value Pr(>|t|)    
(Intercept)                   16.72540    0.47887  34.927   <2e-16 ***
Typecomedy                    -0.48899    0.67327  -0.726    0.475    
scale(NAcc_middle)            -0.12518    0.52039  -0.241    0.812    
scale(AIns_middle)             0.14991    0.44957   0.333    0.742    
scale(MPFC_middle)            -0.18678    0.36032  -0.518    0.609    
Typecomedy:scale(NAcc_middle) -0.08984    0.65434  -0.137    0.892    
Typecomedy:scale(AIns_middle)  0.90710    0.75547   1.201    0.243    
Typecomedy:scale(MPFC_middle)  0.25704    0.59014   0.436    0.667    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.413 on 22 degrees of freedom
Multiple R-squared:  0.2664,    Adjusted R-squared:  0.03297 
F-statistic: 1.141 on 7 and 22 DF,  p-value: 0.3743

           R2m       R2c
[1,] 0.2159758 0.2159758
[1] 114.5573

M11: Neural middle data + affective data + behavioral data


Call:
lm(formula = log(Gross_US_W1_num) ~ Type + scale(Theaters_US_W1_num) + 
    scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_middle) + 
    scale(AIns_middle) + scale(MPFC_middle) + Type:scale(Theaters_US_W1_num) + 
    Type:scale(Pos_arousal_scaled) + Type:scale(Neg_arousal_scaled) + 
    Type:scale(NAcc_middle) + Type:scale(AIns_middle) + Type:scale(MPFC_middle), 
    data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type, 
        levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-1.09293 -0.35963  0.02616  0.30518  0.98599 

Coefficients:
                                     Estimate Std. Error t value Pr(>|t|)    
(Intercept)                          16.15223    0.57597  28.044 4.95e-15 ***
Typecomedy                            0.54203    0.98313   0.551  0.58903    
scale(Theaters_US_W1_num)             1.77077    0.46757   3.787  0.00162 ** 
scale(Pos_arousal_scaled)            -0.38677    0.44147  -0.876  0.39394    
scale(Neg_arousal_scaled)            -0.27307    0.40046  -0.682  0.50506    
scale(NAcc_middle)                    0.28765    0.29669   0.970  0.34671    
scale(AIns_middle)                    0.22399    0.22274   1.006  0.32957    
scale(MPFC_middle)                   -0.08292    0.18114  -0.458  0.65329    
Typecomedy:scale(Theaters_US_W1_num) -0.58783    0.49214  -1.194  0.24971    
Typecomedy:scale(Pos_arousal_scaled)  0.22570    0.50983   0.443  0.66390    
Typecomedy:scale(Neg_arousal_scaled)  0.86067    1.12726   0.764  0.45627    
Typecomedy:scale(NAcc_middle)        -0.02351    0.36370  -0.065  0.94927    
Typecomedy:scale(AIns_middle)        -0.02061    0.47381  -0.044  0.96584    
Typecomedy:scale(MPFC_middle)        -0.04743    0.30256  -0.157  0.87739    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.6913 on 16 degrees of freedom
Multiple R-squared:  0.8722,    Adjusted R-squared:  0.7684 
F-statistic:   8.4 on 13 and 16 DF,  p-value: 7.31e-05

           R2m       R2c
[1,] 0.7901598 0.7901598
[1] 74.13082

M12: Neural offset data alone


Call:
lm(formula = log(Gross_US_W1_num) ~ Type + +scale(NAcc_offset) + 
    scale(AIns_offset) + scale(MPFC_offset) + Type:scale(NAcc_offset) + 
    Type:scale(AIns_offset) + Type:scale(MPFC_offset), data = AllSubs_NeuralActivation %>% 
    mutate(Type = factor(Type, levels = c("horror", "comedy"))))

Residuals:
    Min      1Q  Median      3Q     Max 
-3.6705 -0.3237  0.1382  0.4983  1.8838 

Coefficients:
                              Estimate Std. Error t value Pr(>|t|)    
(Intercept)                   16.62956    0.42725  38.923   <2e-16 ***
Typecomedy                    -1.08351    0.61196  -1.771   0.0905 .  
scale(NAcc_offset)            -0.28582    0.43079  -0.663   0.5139    
scale(AIns_offset)             0.25035    0.39300   0.637   0.5307    
scale(MPFC_offset)             0.41076    0.60318   0.681   0.5030    
Typecomedy:scale(NAcc_offset)  0.12555    0.70607   0.178   0.8605    
Typecomedy:scale(AIns_offset) -0.73049    0.76329  -0.957   0.3490    
Typecomedy:scale(MPFC_offset) -0.05113    0.72014  -0.071   0.9440    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.463 on 22 degrees of freedom
Multiple R-squared:  0.2131,    Adjusted R-squared:  -0.03729 
F-statistic: 0.8511 on 7 and 22 DF,  p-value: 0.5585

           R2m       R2c
[1,] 0.1704196 0.1704196
[1] 116.6614

M13: Neural offset data + affective data + behavioral data


Call:
lm(formula = log(Gross_US_W1_num) ~ Type + scale(Theaters_US_W1_num) + 
    scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_offset) + 
    scale(AIns_offset) + scale(MPFC_offset) + Type:scale(Theaters_US_W1_num) + 
    Type:scale(Pos_arousal_scaled) + Type:scale(Neg_arousal_scaled) + 
    Type:scale(NAcc_offset) + Type:scale(AIns_offset) + Type:scale(MPFC_offset), 
    data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type, 
        levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-0.91489 -0.22644 -0.00754  0.26854  0.87866 

Coefficients:
                                     Estimate Std. Error t value Pr(>|t|)    
(Intercept)                          16.54426    0.51655  32.028 6.12e-16 ***
Typecomedy                            0.67006    0.81305   0.824  0.42198    
scale(Theaters_US_W1_num)             1.52883    0.50309   3.039  0.00782 ** 
scale(Pos_arousal_scaled)            -0.33305    0.46088  -0.723  0.48033    
scale(Neg_arousal_scaled)            -0.50246    0.43708  -1.150  0.26721    
scale(NAcc_offset)                   -0.08279    0.16747  -0.494  0.62778    
scale(AIns_offset)                    0.36225    0.18080   2.004  0.06234 .  
scale(MPFC_offset)                    0.01377    0.40656   0.034  0.97339    
Typecomedy:scale(Theaters_US_W1_num) -0.32755    0.51610  -0.635  0.53462    
Typecomedy:scale(Pos_arousal_scaled)  0.47901    0.49417   0.969  0.34682    
Typecomedy:scale(Neg_arousal_scaled)  2.12858    0.87787   2.425  0.02753 *  
Typecomedy:scale(NAcc_offset)         0.05720    0.27250   0.210  0.83639    
Typecomedy:scale(AIns_offset)        -0.36342    0.32790  -1.108  0.28410    
Typecomedy:scale(MPFC_offset)         0.47131    0.43419   1.086  0.29378    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.5488 on 16 degrees of freedom
Multiple R-squared:  0.9195,    Adjusted R-squared:  0.854 
F-statistic: 14.05 on 13 and 16 DF,  p-value: 2.342e-06

           R2m       R2c
[1,] 0.8629937 0.8629937
[1] 60.27908

M14: Sequence model


Call:
lm(formula = log(Gross_US_W1_num) ~ Type + scale(Theaters_US_W1_num) + 
    scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_onset) + 
    scale(AIns_middle) + scale(MPFC_offset) + Type:scale(Theaters_US_W1_num) + 
    Type:scale(Pos_arousal_scaled) + Type:scale(Neg_arousal_scaled) + 
    Type:scale(NAcc_onset) + Type:scale(AIns_middle) + Type:scale(MPFC_offset), 
    data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type, 
        levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-0.67039 -0.17300  0.05149  0.24972  0.52977 

Coefficients:
                                     Estimate Std. Error t value Pr(>|t|)    
(Intercept)                          16.40339    0.37434  43.820  < 2e-16 ***
Typecomedy                            1.54711    0.70952   2.181  0.04449 *  
scale(Theaters_US_W1_num)             1.11462    0.47322   2.355  0.03160 *  
scale(Pos_arousal_scaled)            -0.55142    0.36523  -1.510  0.15059    
scale(Neg_arousal_scaled)            -0.56512    0.33264  -1.699  0.10870    
scale(NAcc_onset)                    -0.55098    0.20252  -2.721  0.01512 *  
scale(AIns_middle)                    0.47371    0.14548   3.256  0.00496 ** 
scale(MPFC_offset)                    0.49881    0.40397   1.235  0.23474    
Typecomedy:scale(Theaters_US_W1_num)  0.08677    0.48186   0.180  0.85936    
Typecomedy:scale(Pos_arousal_scaled)  0.57794    0.40171   1.439  0.16951    
Typecomedy:scale(Neg_arousal_scaled)  2.89966    0.82288   3.524  0.00282 ** 
Typecomedy:scale(NAcc_onset)          0.83992    0.24292   3.458  0.00324 ** 
Typecomedy:scale(AIns_middle)        -0.42931    0.26991  -1.591  0.13127    
Typecomedy:scale(MPFC_offset)         0.05476    0.41841   0.131  0.89750    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.4237 on 16 degrees of freedom
Multiple R-squared:  0.952, Adjusted R-squared:  0.913 
F-statistic:  24.4 on 13 and 16 DF,  p-value: 4.42e-08

          R2m      R2c
[1,] 0.916248 0.916248
[1] 44.76056

LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9CmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSkKYGBgCgojIExvYWQgbGlicmFyaWVzCmBgYHtyfQpsaWJyYXJ5KGtuaXRyKQpsaWJyYXJ5KHJtZGZvcm1hdHMpCmxpYnJhcnkoZ2dwbG90MikKbGlicmFyeShnZ3B1YnIpCmxpYnJhcnkoR0dhbGx5KQpsaWJyYXJ5KGNhcikKYGBgCgoKYGBge3IsIHdhcm5pbmcgPSBGQUxTRSwgbWVzc2FnZSA9IEZBTFNFfQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShsbWU0KQpsaWJyYXJ5KGxtZXJUZXN0KQpsaWJyYXJ5KCJNdU1JbiIpCmxpYnJhcnkobG10ZXN0KQpsaWJyYXJ5KGJvb3QpCmBgYAoKIyBSZWFkIGRhdGFzZXRzCmBgYHtyfQpBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24gPC0gcmVhZC5jc3YoJy9Vc2Vycy9sdWlzYWx2YXJlei9Eb2N1bWVudHMvR2l0SHViL1JNX1RoZXNpc19OZXVyb2ZvcmVjYXN0aW5nL1Byb2Nlc3NlZERhdGEvQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0FnZ3JlZ2F0ZV9Db21iaW5lZF9jbGVhbi5jc3YnKQoKQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSA8LSByZWFkLmNzdignL1VzZXJzL2x1aXNhbHZhcmV6L0RvY3VtZW50cy9HaXRIdWIvUk1fVGhlc2lzX05ldXJvZm9yZWNhc3RpbmcvUHJvY2Vzc2VkRGF0YS9BbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQWdncmVnYXRlX0NvbWJpbmVkX0NvbWVkeV9jbGVhbi5jc3YnKQoKQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciA8LSByZWFkLmNzdignL1VzZXJzL2x1aXNhbHZhcmV6L0RvY3VtZW50cy9HaXRIdWIvUk1fVGhlc2lzX05ldXJvZm9yZWNhc3RpbmcvUHJvY2Vzc2VkRGF0YS9BbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQWdncmVnYXRlX0NvbWJpbmVkX0hvcnJvcl9jbGVhbi5jc3YnKQoKYGBgCiMgTm90ZXM6IAogLSBIYXZlIG5vdGUgcmVtb3ZlZCBvdXRsaWVycyBmcm9tIGRhdGEuCgojIENyZWF0ZSBkYXRhIGZyYW1lcyBmb3IgZWFjaCBtb2RlbC4KYGBge3J9CiMgRGVmaW5lIGFnZ3JlZ2F0ZSB2YXJpYWJsZXMuIApBbGxfR3Jvc3NfVzFfbG9nIDwtIGxvZyhBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kR3Jvc3NfVVNfVzFfbnVtKQpBbGxfVGhlYXRlcnNfVzEgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJFRoZWF0ZXJzX1VTX1cxX251bQoKQ29tZWR5X0dyb3NzX1cxX2xvZyA8LSBsb2coQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRHcm9zc19VU19XMV9udW0pCkNvbWVkeV9UaGVhdGVyc19XMSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JFRoZWF0ZXJzX1VTX1cxX251bQoKSG9ycm9yX0dyb3NzX1cxX2xvZyA8LSBsb2coQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciRHcm9zc19VU19XMV9udW0pCkhvcnJvcl9UaGVhdGVyc19XMSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fSG9ycm9yJFRoZWF0ZXJzX1VTX1cxX251bQogIApNMV9kZiA8LSBkYXRhLmZyYW1lKEFsbF9Hcm9zc19XMV9sb2csIEFsbF9UaGVhdGVyc19XMSkgCk0xX0NfZGYgPC0gZGF0YS5mcmFtZShDb21lZHlfR3Jvc3NfVzFfbG9nLCBDb21lZHlfVGhlYXRlcnNfVzEpIApNMV9IX2RmIDwtIGRhdGEuZnJhbWUoSG9ycm9yX0dyb3NzX1cxX2xvZywgSG9ycm9yX1RoZWF0ZXJzX1cxKSAKCiMgRGVmaW5lIGFmZmVjdCB2YXJpYWJsZXMuCkFsbF9QQSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kUG9zX2Fyb3VzYWxfc2NhbGVkCkFsbF9OQSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kTmVnX2Fyb3VzYWxfc2NhbGVkCgpDb21lZHlfUEEgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRQb3NfYXJvdXNhbF9zY2FsZWQKQ29tZWR5X05BIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Db21lZHkkTmVnX2Fyb3VzYWxfc2NhbGVkCgpIb3Jyb3JfUEEgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciRQb3NfYXJvdXNhbF9zY2FsZWQKSG9ycm9yX05BIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkTmVnX2Fyb3VzYWxfc2NhbGVkCgpNMl9kZiA8LSBkYXRhLmZyYW1lKEFsbF9Hcm9zc19XMV9sb2csIEFsbF9QQSwgQWxsX05BKSAKTTJfQ19kZiA8LSBkYXRhLmZyYW1lKENvbWVkeV9Hcm9zc19XMV9sb2csIENvbWVkeV9QQSwgQ29tZWR5X05BKSAKTTJfSF9kZiA8LSBkYXRhLmZyYW1lKEhvcnJvcl9Hcm9zc19XMV9sb2csIEhvcnJvcl9QQSwgSG9ycm9yX05BKSAKYGBgCgpgYGB7cn0KIyBEZWZpbmUgSVNDIHZhcmlhYmxlcy4gCkFsbF9OQWNjX0lTQyA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kTkFjY19JU0MKQWxsX0FJbnNfSVNDIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiRBSW5zX0lTQwpBbGxfTVBGQ19JU0MgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJE1QRkNfSVNDCgpDb21lZHlfTkFjY19JU0MgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSROQWNjX0lTQwpDb21lZHlfQUluc19JU0MgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRBSW5zX0lTQwpDb21lZHlfTVBGQ19JU0MgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRNUEZDX0lTQwoKSG9ycm9yX05BY2NfSVNDIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkTkFjY19JU0MKSG9ycm9yX0FJbnNfSVNDIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkQUluc19JU0MKSG9ycm9yX01QRkNfSVNDIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkTVBGQ19JU0MKCiMgRGVmaW5lIG1vZGVscy4gCk00X2RmIDwtIGRhdGEuZnJhbWUoQWxsX05BY2NfSVNDLCBBbGxfQUluc19JU0MsIEFsbF9NUEZDX0lTQykgCk00X0NfZGYgPC0gZGF0YS5mcmFtZShDb21lZHlfTkFjY19JU0MsIENvbWVkeV9BSW5zX0lTQywgQ29tZWR5X01QRkNfSVNDKSAKTTRfSF9kZiA8LSBkYXRhLmZyYW1lKEhvcnJvcl9OQWNjX0lTQywgSG9ycm9yX0FJbnNfSVNDLCBIb3Jyb3JfTVBGQ19JU0MpIAoKTTVfZGYgPC0gZGF0YS5mcmFtZShBbGxfR3Jvc3NfVzFfbG9nLCBBbGxfUEEsIEFsbF9OQSwgQWxsX05BY2NfSVNDLCBBbGxfQUluc19JU0MsIEFsbF9NUEZDX0lTQykgCk01X0NfZGYgPC0gZGF0YS5mcmFtZShDb21lZHlfR3Jvc3NfVzFfbG9nLCBDb21lZHlfUEEsIENvbWVkeV9OQSwgQ29tZWR5X05BY2NfSVNDLCBDb21lZHlfQUluc19JU0MsIENvbWVkeV9NUEZDX0lTQykgCk01X0hfZGYgPC0gZGF0YS5mcmFtZShIb3Jyb3JfR3Jvc3NfVzFfbG9nLCBIb3Jyb3JfUEEsIEhvcnJvcl9OQSwgSG9ycm9yX05BY2NfSVNDLCBIb3Jyb3JfQUluc19JU0MsIEhvcnJvcl9NUEZDX0lTQykgCmBgYAoKYGBge3J9CiMgRGVmaW5lIHdob2xlIHZhcmlhYmxlcy4gCkFsbF9OQWNjX3dob2xlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiROQWNjX3dob2xlCkFsbF9BSW5zX3dob2xlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiRBSW5zX3dob2xlCkFsbF9NUEZDX3dob2xlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiRNUEZDX3dob2xlCgpDb21lZHlfTkFjY193aG9sZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JE5BY2Nfd2hvbGUKQ29tZWR5X0FJbnNfd2hvbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRBSW5zX3dob2xlCkNvbWVkeV9NUEZDX3dob2xlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Db21lZHkkTVBGQ193aG9sZQoKSG9ycm9yX05BY2Nfd2hvbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciROQWNjX3dob2xlCkhvcnJvcl9BSW5zX3dob2xlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkQUluc193aG9sZQpIb3Jyb3JfTVBGQ193aG9sZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fSG9ycm9yJE1QRkNfd2hvbGUKCiMgRGVmaW5lIG1vZGVscy4gCk02X2RmIDwtIGRhdGEuZnJhbWUoQWxsX05BY2Nfd2hvbGUsIEFsbF9BSW5zX3dob2xlLCBBbGxfTVBGQ193aG9sZSkgCk02X0NfZGYgPC0gZGF0YS5mcmFtZShDb21lZHlfTkFjY193aG9sZSwgQ29tZWR5X0FJbnNfd2hvbGUsIENvbWVkeV9NUEZDX3dob2xlKSAKTTZfSF9kZiA8LSBkYXRhLmZyYW1lKEhvcnJvcl9OQWNjX3dob2xlLCBIb3Jyb3JfQUluc193aG9sZSwgSG9ycm9yX01QRkNfd2hvbGUpIAoKTTdfZGYgPC0gZGF0YS5mcmFtZShBbGxfR3Jvc3NfVzFfbG9nLCBBbGxfUEEsIEFsbF9OQSwgQWxsX05BY2Nfd2hvbGUsIEFsbF9BSW5zX3dob2xlLCBBbGxfTVBGQ193aG9sZSkgCk03X0NfZGYgPC0gZGF0YS5mcmFtZShDb21lZHlfR3Jvc3NfVzFfbG9nLCBDb21lZHlfUEEsIENvbWVkeV9OQSwgQ29tZWR5X05BY2Nfd2hvbGUsCiAgICAgICAgICAgICAgICAgICAgICBDb21lZHlfQUluc193aG9sZSwgQ29tZWR5X01QRkNfd2hvbGUpIApNN19IX2RmIDwtIGRhdGEuZnJhbWUoSG9ycm9yX0dyb3NzX1cxX2xvZywgSG9ycm9yX1BBLCBIb3Jyb3JfTkEsIEhvcnJvcl9OQWNjX3dob2xlLAogICAgICAgICAgICAgICAgICAgICAgSG9ycm9yX0FJbnNfd2hvbGUsIEhvcnJvcl9NUEZDX3dob2xlKSAKYGBgCgpgYGB7cn0KIyBEZWZpbmUgb25zZXQgdmFyaWFibGVzLiAKQWxsX05BY2Nfb25zZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJE5BY2Nfb25zZXQKQWxsX0FJbnNfb25zZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJEFJbnNfb25zZXQKQWxsX01QRkNfb25zZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJE1QRkNfb25zZXQKCkNvbWVkeV9OQWNjX29uc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Db21lZHkkTkFjY19vbnNldApDb21lZHlfQUluc19vbnNldCA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JEFJbnNfb25zZXQKQ29tZWR5X01QRkNfb25zZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRNUEZDX29uc2V0CgpIb3Jyb3JfTkFjY19vbnNldCA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fSG9ycm9yJE5BY2Nfb25zZXQKSG9ycm9yX0FJbnNfb25zZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciRBSW5zX29uc2V0CkhvcnJvcl9NUEZDX29uc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkTVBGQ19vbnNldAoKIyBEZWZpbmUgbW9kZWxzLiAKTThfZGYgPC0gZGF0YS5mcmFtZShBbGxfTkFjY19vbnNldCwgQWxsX0FJbnNfb25zZXQsIEFsbF9NUEZDX29uc2V0KSAKTThfQ19kZiA8LSBkYXRhLmZyYW1lKENvbWVkeV9OQWNjX29uc2V0LCBDb21lZHlfQUluc19vbnNldCwgQ29tZWR5X01QRkNfb25zZXQpIApNOF9IX2RmIDwtIGRhdGEuZnJhbWUoSG9ycm9yX05BY2Nfb25zZXQsIEhvcnJvcl9BSW5zX29uc2V0LCBIb3Jyb3JfTVBGQ19vbnNldCkgCgpNOV9kZiA8LSBkYXRhLmZyYW1lKEFsbF9Hcm9zc19XMV9sb2csIEFsbF9QQSwgQWxsX05BLCBBbGxfTkFjY19vbnNldCwgQWxsX0FJbnNfb25zZXQsIEFsbF9NUEZDX29uc2V0KSAKTTlfQ19kZiA8LSBkYXRhLmZyYW1lKENvbWVkeV9Hcm9zc19XMV9sb2csIENvbWVkeV9QQSwgQ29tZWR5X05BLCBDb21lZHlfTkFjY19vbnNldCwKICAgICAgICAgICAgICAgICAgICAgIENvbWVkeV9BSW5zX29uc2V0LCBDb21lZHlfTVBGQ19vbnNldCkgCk05X0hfZGYgPC0gZGF0YS5mcmFtZShIb3Jyb3JfR3Jvc3NfVzFfbG9nLCBIb3Jyb3JfUEEsIEhvcnJvcl9OQSwgSG9ycm9yX05BY2Nfb25zZXQsCiAgICAgICAgICAgICAgICAgICAgICBIb3Jyb3JfQUluc19vbnNldCwgSG9ycm9yX01QRkNfb25zZXQpIApgYGAKCmBgYHtyfQojIERlZmluZSBtaWRkbGUgdmFyaWFibGVzLiAKQWxsX05BY2NfbWlkZGxlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiROQWNjX21pZGRsZQpBbGxfQUluc19taWRkbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJEFJbnNfbWlkZGxlCkFsbF9NUEZDX21pZGRsZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kTVBGQ19taWRkbGUKCkNvbWVkeV9OQWNjX21pZGRsZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JE5BY2NfbWlkZGxlCkNvbWVkeV9BSW5zX21pZGRsZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JEFJbnNfbWlkZGxlCkNvbWVkeV9NUEZDX21pZGRsZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JE1QRkNfbWlkZGxlCgpIb3Jyb3JfTkFjY19taWRkbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciROQWNjX21pZGRsZQpIb3Jyb3JfQUluc19taWRkbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciRBSW5zX21pZGRsZQpIb3Jyb3JfTVBGQ19taWRkbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciRNUEZDX21pZGRsZQoKIyBEZWZpbmUgbW9kZWxzLiAKTTEwX2RmIDwtIGRhdGEuZnJhbWUoQWxsX05BY2NfbWlkZGxlLCBBbGxfQUluc19taWRkbGUsIEFsbF9NUEZDX21pZGRsZSkgCk0xMF9DX2RmIDwtIGRhdGEuZnJhbWUoQ29tZWR5X05BY2NfbWlkZGxlLCBDb21lZHlfQUluc19taWRkbGUsIENvbWVkeV9NUEZDX21pZGRsZSkgCk0xMF9IX2RmIDwtIGRhdGEuZnJhbWUoSG9ycm9yX05BY2NfbWlkZGxlLCBIb3Jyb3JfQUluc19taWRkbGUsIEhvcnJvcl9NUEZDX21pZGRsZSkgCgpNMTFfZGYgPC0gZGF0YS5mcmFtZShBbGxfR3Jvc3NfVzFfbG9nLCBBbGxfUEEsIEFsbF9OQSwgQWxsX05BY2NfbWlkZGxlLCBBbGxfQUluc19taWRkbGUsIEFsbF9NUEZDX21pZGRsZSkgCk0xMV9DX2RmIDwtIGRhdGEuZnJhbWUoQ29tZWR5X0dyb3NzX1cxX2xvZywgQ29tZWR5X1BBLCBDb21lZHlfTkEsIENvbWVkeV9OQWNjX21pZGRsZSwKICAgICAgICAgICAgICAgICAgICAgIENvbWVkeV9BSW5zX21pZGRsZSwgQ29tZWR5X01QRkNfbWlkZGxlKSAKTTExX0hfZGYgPC0gZGF0YS5mcmFtZShIb3Jyb3JfR3Jvc3NfVzFfbG9nLCBIb3Jyb3JfUEEsIEhvcnJvcl9OQSwgSG9ycm9yX05BY2NfbWlkZGxlLAogICAgICAgICAgICAgICAgICAgICAgSG9ycm9yX0FJbnNfbWlkZGxlLCBIb3Jyb3JfTVBGQ19taWRkbGUpIApgYGAKCmBgYHtyfQojIERlZmluZSBtaWRkbGUgdmFyaWFibGVzLiAKQWxsX05BY2Nfb2Zmc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiROQWNjX29mZnNldApBbGxfQUluc19vZmZzZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJEFJbnNfb2Zmc2V0CkFsbF9NUEZDX29mZnNldCA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kTVBGQ19vZmZzZXQKCkNvbWVkeV9OQWNjX29mZnNldCA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JE5BY2Nfb2Zmc2V0CkNvbWVkeV9BSW5zX29mZnNldCA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JEFJbnNfb2Zmc2V0CkNvbWVkeV9NUEZDX29mZnNldCA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JE1QRkNfb2Zmc2V0CgpIb3Jyb3JfTkFjY19vZmZzZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciROQWNjX29mZnNldApIb3Jyb3JfQUluc19vZmZzZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciRBSW5zX29mZnNldApIb3Jyb3JfTVBGQ19vZmZzZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciRNUEZDX29mZnNldAoKIyBEZWZpbmUgbW9kZWxzLiAKTTEyX2RmIDwtIGRhdGEuZnJhbWUoQWxsX05BY2Nfb2Zmc2V0LCBBbGxfQUluc19vZmZzZXQsIEFsbF9NUEZDX29mZnNldCkgCk0xMl9DX2RmIDwtIGRhdGEuZnJhbWUoQ29tZWR5X05BY2Nfb2Zmc2V0LCBDb21lZHlfQUluc19vZmZzZXQsIENvbWVkeV9NUEZDX29mZnNldCkgCk0xMl9IX2RmIDwtIGRhdGEuZnJhbWUoSG9ycm9yX05BY2Nfb2Zmc2V0LCBIb3Jyb3JfQUluc19vZmZzZXQsIEhvcnJvcl9NUEZDX29mZnNldCkgCgpNMTNfZGYgPC0gZGF0YS5mcmFtZShBbGxfR3Jvc3NfVzFfbG9nLCBBbGxfUEEsIEFsbF9OQSwgQWxsX05BY2Nfb2Zmc2V0LCBBbGxfQUluc19vZmZzZXQsIEFsbF9NUEZDX29mZnNldCkgCk0xM19DX2RmIDwtIGRhdGEuZnJhbWUoQ29tZWR5X0dyb3NzX1cxX2xvZywgQ29tZWR5X1BBLCBDb21lZHlfTkEsIENvbWVkeV9OQWNjX29mZnNldCwKICAgICAgICAgICAgICAgICAgICAgIENvbWVkeV9BSW5zX29mZnNldCwgQ29tZWR5X01QRkNfb2Zmc2V0KSAKTTEzX0hfZGYgPC0gZGF0YS5mcmFtZShIb3Jyb3JfR3Jvc3NfVzFfbG9nLCBIb3Jyb3JfUEEsIEhvcnJvcl9OQSwgSG9ycm9yX05BY2Nfb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgSG9ycm9yX0FJbnNfb2Zmc2V0LCBIb3Jyb3JfTVBGQ19vZmZzZXQpIApgYGAKCmBgYHtyfQoKTTE0X2RmIDwtIGRhdGEuZnJhbWUoQWxsX0dyb3NzX1cxX2xvZywgQWxsX1BBLCBBbGxfTkEsIEFsbF9OQWNjX29uc2V0LCBBbGxfQUluc19taWRkbGUsIEFsbF9NUEZDX29mZnNldCkgCk0xNF9DX2RmIDwtIGRhdGEuZnJhbWUoQ29tZWR5X0dyb3NzX1cxX2xvZywgQ29tZWR5X1BBLCBDb21lZHlfTkEsIENvbWVkeV9OQWNjX29uc2V0LAogICAgICAgICAgICAgICAgICAgICAgQ29tZWR5X0FJbnNfbWlkZGxlLCBDb21lZHlfTVBGQ19vZmZzZXQpIApNMTRfSF9kZiA8LSBkYXRhLmZyYW1lKEhvcnJvcl9Hcm9zc19XMV9sb2csIEhvcnJvcl9QQSwgSG9ycm9yX05BLCBIb3Jyb3JfTkFjY19vbnNldCwKICAgICAgICAgICAgICAgICAgICAgIEhvcnJvcl9BSW5zX21pZGRsZSwgSG9ycm9yX01QRkNfb2Zmc2V0KSAKYGBgCgoKIyBOZXVyb2ZvcmVjYXN0aW5nOiBGaXJzdCBXZWVrIFVTLgojIyBNMTogQmVoYXZpb3JhbCBkYXRhIApgYGB7ciwgZWNobyA9IEZBTFNFfQpNMSA8LSBsbShsb2coR3Jvc3NfVVNfVzFfbnVtKSB+IFR5cGUgCiAgICAgICAgICsgc2NhbGUoVGhlYXRlcnNfVVNfVzFfbnVtKQogICAgICAgICArIFR5cGU6c2NhbGUoVGhlYXRlcnNfVVNfVzFfbnVtKQogICAgICAgICAsIGRhdGEgPSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24gJT4lIG11dGF0ZShUeXBlID0gZmFjdG9yKFR5cGUsIGxldmVscyA9IGMoImhvcnJvciIsICJjb21lZHkiKSkpKQpzdW1tYXJ5KE0xKQpyLnNxdWFyZWRHTE1NKE0xKQpBSUMoTTEpCgojIENyZWF0ZSBwYWlycyBwbG90LiAKZ2dwYWlycyhNMV9kZikKZ2dwYWlycyhNMV9DX2RmKQpnZ3BhaXJzKE0xX0hfZGYpCmBgYAoKCiMjIE0yOiBBZmZlY3RpdmUgZGF0YSBhbG9uZQpgYGB7ciwgZWNobyA9IEZBTFNFfQpNMiA8LSBsbShsb2coR3Jvc3NfVVNfVzFfbnVtKSB+IFR5cGUgCiAgICAgICAgICsgc2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKSAKICAgICAgICAgKyBzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICsgVHlwZTpzY2FsZShQb3NfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICsgVHlwZTpzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTIpCnIuc3F1YXJlZEdMTU0oTTIpCkFJQyhNMikKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE0yX2RmKQpnZ3BhaXJzKE0yX0NfZGYpCmdncGFpcnMoTTJfSF9kZikKYGBgCgojIyBNMzogQWdncmVnYXRlIGFuZCBhZmZlY3RpdmUgZGF0YSBhbG9uZQpgYGB7ciwgZWNobyA9IEZBTFNFfQpNMyA8LSBsbShsb2coR3Jvc3NfVVNfVzFfbnVtKSB+IFR5cGUgCiAgICAgICAgICMrIHNjYWxlKFRoZWF0ZXJzX1VTX1cxX251bSkKICAgICAgICAgKyBzY2FsZShQb3NfYXJvdXNhbF9zY2FsZWQpIAogICAgICAgICArIHNjYWxlKE5lZ19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgIysgVHlwZTpzY2FsZShUaGVhdGVyc19VU19XMV9udW0pCiAgICAgICAgICsgVHlwZTpzY2FsZShQb3NfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICsgVHlwZTpzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTMpCnIuc3F1YXJlZEdMTU0oTTMpCkFJQyhNMykKCmBgYAoKIyBNNDogSVNDIGRhdGEgYWxvbmUKYGBge3IsIGVjaG8gPSBGQUxTRX0KTTQgPC0gbG0obG9nKEdyb3NzX1VTX1cxX251bSkgfiBUeXBlICsgCiAgICAgICAgICAgICAgKyBzY2FsZShOQWNjX0lTQykgCiAgICAgICAgICAgICAgKyBzY2FsZShBSW5zX0lTQykgCiAgICAgICAgICAgICAgKyBzY2FsZShNUEZDX0lTQykgCiAgICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE5BY2NfSVNDKSAKICAgICAgICAgICAgICArIFR5cGU6c2NhbGUoQUluc19JU0MpIAogICAgICAgICAgICAgICsgVHlwZTpzY2FsZShNUEZDX0lTQykgCiAgICAgICAgICAgICAgLCBkYXRhID0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uICU+JSBtdXRhdGUoVHlwZSA9IGZhY3RvcihUeXBlLCBsZXZlbHMgPSBjKCJob3Jyb3IiLCAiY29tZWR5IikpKSkKc3VtbWFyeShNNCkKci5zcXVhcmVkR0xNTShNNCkKQUlDKE00KQoKIyBDcmVhdGUgcGFpcnMgcGxvdC4gCmdncGFpcnMoTTRfZGYpCmdncGFpcnMoTTRfQ19kZikKZ2dwYWlycyhNNF9IX2RmKQpgYGAKCiMgTTU6IElTQyBkYXRhICsgYWZmZWN0aXZlIGRhdGEgKyBiZWhhdmlvcmFsIGRhdGEKYGBge3IsIGVjaG8gPSBGQUxTRX0KTTUgPC0gbG0obG9nKEdyb3NzX1VTX1cxX251bSkgfiBUeXBlIAogICAgICAgICAgICAgKyBzY2FsZShUaGVhdGVyc19VU19XMV9udW0pIAogICAgICAgICAgICAgKyBzY2FsZShQb3NfYXJvdXNhbF9zY2FsZWQpIAogICAgICAgICAgICAgKyBzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpICAKICAgICAgICAgICAgICMrIHNjYWxlKFdfc2NvcmVfc2NhbGVkKSAKICAgICAgICAgICAgICsgc2NhbGUoTkFjY19JU0MpIAogICAgICAgICAgICAgKyBzY2FsZShBSW5zX0lTQykgCiAgICAgICAgICAgICArIHNjYWxlKE1QRkNfSVNDKSAKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShUaGVhdGVyc19VU19XMV9udW0pIAogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICAgICAjKyBUeXBlOnNjYWxlKFdfc2NvcmVfc2NhbGVkKQogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE5BY2NfSVNDKSAKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShBSW5zX0lTQykgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTVBGQ19JU0MpCiAgICAgICAgICAgICAsIGRhdGEgPSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24gJT4lIG11dGF0ZShUeXBlID0gZmFjdG9yKFR5cGUsIGxldmVscyA9IGMoImhvcnJvciIsICJjb21lZHkiKSkpKQpzdW1tYXJ5KE01KQpyLnNxdWFyZWRHTE1NKE01KQpBSUMoTTUpCgojIENyZWF0ZSBwYWlycyBwbG90LiAKZ2dwYWlycyhNNV9kZikKZ2dwYWlycyhNNV9DX2RmKQpnZ3BhaXJzKE01X0hfZGYpCmBgYAoKIyBNNjogTmV1cmFsIHdob2xlIGRhdGEgYWxvbmUKYGBge3IsIGVjaG8gPSBGQUxTRX0KTTYgPC0gbG0obG9nKEdyb3NzX1VTX1cxX251bSkgfiBUeXBlICsgCiAgICAgICAgICAgICAgIysgVGhlYXRlcnNfVVNfVzFfbnVtIAogICAgICAgICAgICAgICsgc2NhbGUoTkFjY193aG9sZSkgCiAgICAgICAgICAgICAgKyBzY2FsZShBSW5zX3dob2xlKSAKICAgICAgICAgICAgICArIHNjYWxlKE1QRkNfd2hvbGUpIAogICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOQWNjX3dob2xlKSAKICAgICAgICAgICAgICArIFR5cGU6c2NhbGUoQUluc193aG9sZSkgCiAgICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE1QRkNfd2hvbGUpIAogICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTYpCnIuc3F1YXJlZEdMTU0oTTYpCkFJQyhNNikKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE02X2RmKQpnZ3BhaXJzKE02X0NfZGYpCmdncGFpcnMoTTZfSF9kZikKYGBgCgojIE03OiBOZXVyYWwgd2hvbGUgZGF0YSArIGFmZmVjdGl2ZSBkYXRhICsgYmVoYXZpb3JhbCBkYXRhCmBgYHtyLCBlY2hvID0gRkFMU0V9Ck03IDwtIGxtKGxvZyhHcm9zc19VU19XMV9udW0pIH4gVHlwZSAKICAgICAgICAgICAgICsgc2NhbGUoVGhlYXRlcnNfVVNfVzFfbnVtKQogICAgICAgICAgICAgIysgVG90YWxfd2Vla3MgCiAgICAgICAgICAgICAjKyBXZWVrc19hdmdfcGVyX3RoZWF0ZXIKICAgICAgICAgICAgICsgc2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKSAKICAgICAgICAgICAgICsgc2NhbGUoTmVnX2Fyb3VzYWxfc2NhbGVkKSAgCiAgICAgICAgICAgICAjKyBzY2FsZShXX3Njb3JlX3NjYWxlZCkgCiAgICAgICAgICAgICArIHNjYWxlKE5BY2Nfd2hvbGUpIAogICAgICAgICAgICAgKyBzY2FsZShBSW5zX3dob2xlKSAKICAgICAgICAgICAgICsgc2NhbGUoTVBGQ193aG9sZSkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoVGhlYXRlcnNfVVNfVzFfbnVtKQogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTkFjY193aG9sZSkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoQUluc193aG9sZSkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTVBGQ193aG9sZSkKICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTcpCnIuc3F1YXJlZEdMTU0oTTcpCkFJQyhNNykKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE03X2RmKQpnZ3BhaXJzKE03X0NfZGYpCmdncGFpcnMoTTdfSF9kZikKYGBgCgojIE04OiBOZXVyYWwgb25zZXQgZGF0YSBhbG9uZQpgYGB7ciwgZWNobyA9IEZBTFNFfQpNOCA8LSBsbShsb2coR3Jvc3NfVVNfVzFfbnVtKSB+IFR5cGUgKyAKICAgICAgICAgICAgICArIHNjYWxlKE5BY2Nfb25zZXQpIAogICAgICAgICAgICAgICsgc2NhbGUoQUluc19vbnNldCkgCiAgICAgICAgICAgICAgKyBzY2FsZShNUEZDX29uc2V0KSAKICAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTkFjY19vbnNldCkgCiAgICAgICAgICAgICAgKyBUeXBlOnNjYWxlKEFJbnNfb25zZXQpIAogICAgICAgICAgICAgICsgVHlwZTpzY2FsZShNUEZDX29uc2V0KSAKICAgICAgICAgICAgICAsIGRhdGEgPSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24gJT4lIG11dGF0ZShUeXBlID0gZmFjdG9yKFR5cGUsIGxldmVscyA9IGMoImhvcnJvciIsICJjb21lZHkiKSkpKQpzdW1tYXJ5KE04KQpyLnNxdWFyZWRHTE1NKE04KQpBSUMoTTgpCgojIENyZWF0ZSBwYWlycyBwbG90LiAKZ2dwYWlycyhNOF9kZikKZ2dwYWlycyhNOF9DX2RmKQpnZ3BhaXJzKE04X0hfZGYpCmBgYAoKIyBNOTogTmV1cmFsIG9uc2V0IGRhdGEgKyBhZmZlY3RpdmUgZGF0YSArIGJlaGF2aW9yYWwgZGF0YQpgYGB7ciwgZWNobyA9IEZBTFNFfQpNOSA8LSBsbShsb2coR3Jvc3NfVVNfVzFfbnVtKSB+IFR5cGUgCiAgICAgICAgICAgICArIHNjYWxlKFRoZWF0ZXJzX1VTX1cxX251bSkKICAgICAgICAgICAgICsgc2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKSAKICAgICAgICAgICAgICsgc2NhbGUoTmVnX2Fyb3VzYWxfc2NhbGVkKSAgCiAgICAgICAgICAgICArIHNjYWxlKE5BY2Nfb25zZXQpIAogICAgICAgICAgICAgKyBzY2FsZShBSW5zX29uc2V0KSAKICAgICAgICAgICAgICsgc2NhbGUoTVBGQ19vbnNldCkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoVGhlYXRlcnNfVVNfVzFfbnVtKQogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTkFjY19vbnNldCkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoQUluc19vbnNldCkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTVBGQ19vbnNldCkKICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTkpCnIuc3F1YXJlZEdMTU0oTTkpCkFJQyhNOSkKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE05X2RmKQpnZ3BhaXJzKE05X0NfZGYpCmdncGFpcnMoTTlfSF9kZikKYGBgCgojIE0xMDogTmV1cmFsIG1pZGRsZSBkYXRhIGFsb25lCmBgYHtyLCBlY2hvID0gRkFMU0V9Ck0xMCA8LSBsbShsb2coR3Jvc3NfVVNfVzFfbnVtKSB+IFR5cGUgKyAKICAgICAgICAgICAgICArIHNjYWxlKE5BY2NfbWlkZGxlKSAKICAgICAgICAgICAgICArIHNjYWxlKEFJbnNfbWlkZGxlKSAKICAgICAgICAgICAgICArIHNjYWxlKE1QRkNfbWlkZGxlKSAKICAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTkFjY19taWRkbGUpIAogICAgICAgICAgICAgICsgVHlwZTpzY2FsZShBSW5zX21pZGRsZSkgCiAgICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE1QRkNfbWlkZGxlKSAKICAgICAgICAgICAgICAsIGRhdGEgPSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24gJT4lIG11dGF0ZShUeXBlID0gZmFjdG9yKFR5cGUsIGxldmVscyA9IGMoImhvcnJvciIsICJjb21lZHkiKSkpKQpzdW1tYXJ5KE0xMCkKci5zcXVhcmVkR0xNTShNMTApCkFJQyhNMTApCgojIENyZWF0ZSBwYWlycyBwbG90LiAKZ2dwYWlycyhNMTBfZGYpCmdncGFpcnMoTTEwX0NfZGYpCmdncGFpcnMoTTEwX0hfZGYpCmBgYAoKIyBNMTE6IE5ldXJhbCBtaWRkbGUgZGF0YSArIGFmZmVjdGl2ZSBkYXRhICsgYmVoYXZpb3JhbCBkYXRhCmBgYHtyLCBlY2hvID0gRkFMU0V9Ck0xMSA8LSBsbShsb2coR3Jvc3NfVVNfVzFfbnVtKSB+IFR5cGUgCiAgICAgICAgICAgICArIHNjYWxlKFRoZWF0ZXJzX1VTX1cxX251bSkKICAgICAgICAgICAgICsgc2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKSAKICAgICAgICAgICAgICsgc2NhbGUoTmVnX2Fyb3VzYWxfc2NhbGVkKSAgCiAgICAgICAgICAgICArIHNjYWxlKE5BY2NfbWlkZGxlKSAKICAgICAgICAgICAgICsgc2NhbGUoQUluc19taWRkbGUpIAogICAgICAgICAgICAgKyBzY2FsZShNUEZDX21pZGRsZSkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoVGhlYXRlcnNfVVNfVzFfbnVtKQogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTkFjY19taWRkbGUpIAogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKEFJbnNfbWlkZGxlKSAKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShNUEZDX21pZGRsZSkKICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTExKQpyLnNxdWFyZWRHTE1NKE0xMSkKQUlDKE0xMSkKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE0xMV9kZikKZ2dwYWlycyhNMTFfQ19kZikKZ2dwYWlycyhNMTFfSF9kZikKYGBgCgojIE0xMjogTmV1cmFsIG9mZnNldCBkYXRhIGFsb25lCmBgYHtyLCBlY2hvID0gRkFMU0V9Ck0xMiA8LSBsbShsb2coR3Jvc3NfVVNfVzFfbnVtKSB+IFR5cGUgKyAKICAgICAgICAgICAgICArIHNjYWxlKE5BY2Nfb2Zmc2V0KSAKICAgICAgICAgICAgICArIHNjYWxlKEFJbnNfb2Zmc2V0KSAKICAgICAgICAgICAgICArIHNjYWxlKE1QRkNfb2Zmc2V0KSAKICAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTkFjY19vZmZzZXQpIAogICAgICAgICAgICAgICsgVHlwZTpzY2FsZShBSW5zX29mZnNldCkgCiAgICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE1QRkNfb2Zmc2V0KSAKICAgICAgICAgICAgICAsIGRhdGEgPSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24gJT4lIG11dGF0ZShUeXBlID0gZmFjdG9yKFR5cGUsIGxldmVscyA9IGMoImhvcnJvciIsICJjb21lZHkiKSkpKQpzdW1tYXJ5KE0xMikKci5zcXVhcmVkR0xNTShNMTIpCkFJQyhNMTIpCgojIENyZWF0ZSBwYWlycyBwbG90LiAKZ2dwYWlycyhNMTJfZGYpCmdncGFpcnMoTTEyX0NfZGYpCmdncGFpcnMoTTEyX0hfZGYpCmBgYAoKIyBNMTM6IE5ldXJhbCBvZmZzZXQgZGF0YSArIGFmZmVjdGl2ZSBkYXRhICsgYmVoYXZpb3JhbCBkYXRhCmBgYHtyLCBlY2hvID0gRkFMU0V9Ck0xMyA8LSBsbShsb2coR3Jvc3NfVVNfVzFfbnVtKSB+IFR5cGUgCiAgICAgICAgICAgICArIHNjYWxlKFRoZWF0ZXJzX1VTX1cxX251bSkKICAgICAgICAgICAgICsgc2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKSAKICAgICAgICAgICAgICsgc2NhbGUoTmVnX2Fyb3VzYWxfc2NhbGVkKSAgCiAgICAgICAgICAgICArIHNjYWxlKE5BY2Nfb2Zmc2V0KSAKICAgICAgICAgICAgICsgc2NhbGUoQUluc19vZmZzZXQpIAogICAgICAgICAgICAgKyBzY2FsZShNUEZDX29mZnNldCkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoVGhlYXRlcnNfVVNfVzFfbnVtKQogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTkFjY19vZmZzZXQpIAogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKEFJbnNfb2Zmc2V0KSAKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShNUEZDX29mZnNldCkKICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTEzKQpyLnNxdWFyZWRHTE1NKE0xMykKQUlDKE0xMykKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE0xM19kZikKZ2dwYWlycyhNMTNfQ19kZikKZ2dwYWlycyhNMTNfSF9kZikKYGBgCgojIE0xNDogU2VxdWVuY2UgbW9kZWwKYGBge3IsIGVjaG8gPSBGQUxTRX0KTTE0IDwtIGxtKGxvZyhHcm9zc19VU19XMV9udW0pIH4gVHlwZSAKICAgICAgICAgICAgICsgc2NhbGUoVGhlYXRlcnNfVVNfVzFfbnVtKQogICAgICAgICAgICAgKyBzY2FsZShQb3NfYXJvdXNhbF9zY2FsZWQpIAogICAgICAgICAgICAgKyBzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpIAogICAgICAgICAgICAgIysgc2NhbGUoV19zY29yZV9zY2FsZWQpICAKICAgICAgICAgICAgICsgc2NhbGUoTkFjY19vbnNldCkgCiAgICAgICAgICAgICArIHNjYWxlKEFJbnNfbWlkZGxlKSAKICAgICAgICAgICAgICsgc2NhbGUoTVBGQ19vZmZzZXQpIAogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKFRoZWF0ZXJzX1VTX1cxX251bSkKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShQb3NfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTmVnX2Fyb3VzYWxfc2NhbGVkKQogICAgICAgICAgICAgIysgVHlwZTpzY2FsZShXX3Njb3JlX3NjYWxlZCkKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOQWNjX29uc2V0KSAKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShBSW5zX21pZGRsZSkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTVBGQ19vZmZzZXQpCiAgICAgICAgICAgICAsIGRhdGEgPSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24gJT4lIG11dGF0ZShUeXBlID0gZmFjdG9yKFR5cGUsIGxldmVscyA9IGMoImhvcnJvciIsICJjb21lZHkiKSkpKQpzdW1tYXJ5KE0xNCkKci5zcXVhcmVkR0xNTShNMTQpCkFJQyhNMTQpCgojIENyZWF0ZSBwYWlycyBwbG90LiAKZ2dwYWlycyhNMTRfZGYpCmdncGFpcnMoTTE0X0NfZGYpCmdncGFpcnMoTTE0X0hfZGYpCmBgYAo=